/*************************************************
  * 描述：文件工具类
  *
  * File：fileutil.h
  * Author：chenyujin@mozihealthcare.cn
  * Date：2025/9/4
  * Update：dongyao@mozihealthcare.cn 2025/9/19
  * ************************************************/
#ifndef COREXI_COMMON_PC_FILEUTIL_H
#define COREXI_COMMON_PC_FILEUTIL_H

#include <common/export.h>
#include <functional>
#include <memory>
#include <string>
#include <vector>
class QImage;
class CXI_COMMON_EXPORT FileUtil
{
public:
	/**
	 * @brief 压缩文件
	 * @param srcPath 源文件/文件夹路径
	 * @param destPath 压缩文件生成文件路径(可指定压缩文件名称)
	 * @return true 压缩成功
	 * @return false 压缩失败
	 */
	static bool zipFile(const std::string& srcPath, const std::string& destPath);

	/**
	 * @brief 解压文件
	 * @param srcPath 源压缩文件路径
	 * @param destPath 解压文件/文件夹生成文件路径(可指定解压文件名称)
	 * @return true 解压成功
	 * @return false 解压失败
	 */
	static bool unZipFile(const std::string& srcPath, const std::string& destPath);

	/**
	 * @brief 获取文件二进制字节(根据路径获取字节数组)
	 * @param filePath 文件路径
	 * @return std::vector<unsigned char> 文件字节
	 */
	static std::vector<unsigned char> getFileBytes(const std::string& filePath);

	/**
	 * @brief 判断是否是url
	 * 该逻辑在StringVerify工具类中重复，注掉
	 * @param url
	 * @return true 是url
	 * @return false 不是url
	 */
	// static bool isUrl(const std::string& url);

	/**
	 * 获取图片
	 * @param filePath 文件路径
	 * @return	图片
	 */
	static QImage getImage(const std::string& filePath);

	/**
	 * 获取路径的系统图标(包含url)
	 * @param path 文件路径和url路径
	 * @return 系统图标
	 */
	static QImage getFileIcon(const std::string& path);
};
#endif//COREXI_COMMON_PC_FILEUTIL_H
